package com.ddwl.funds.dao.model;

import com.ddwl.common.dao.model.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.Table;

/**
 * wx_ent_pay
 * @author 
 */
@Table(name="wx_ent_pay")
@ApiModel(value="企业微信付款到零钱/银行卡")
@Getter
@Setter
public class WxEntPay extends BaseModel {

    /**
     * 商户账号appid
     */
    @ApiModelProperty(value="商户账号appid")
    private String mchAppid;

    /**
     * 商户号
     */
    @ApiModelProperty(value="商户号")
    private String mchId;

    /**
     * 设备号
     */
    @ApiModelProperty(value="设备号")
    private String deviceInfo;

    /**
     * 随机字符串
     */
    @ApiModelProperty(value="随机字符串")
    private String nonceStr;

    /**
     * 签名
     */
    @ApiModelProperty(value="签名")
    private String sign;

    /**
     * 付款类型 0:微信零钱，2：银行卡
     */
    @ApiModelProperty(value="付款类型 0:微信零钱，2：银行卡")
    private Integer payType;

    /**
     * 收款方银行卡号（采用标准RSA算法，公钥由微信侧提供）付款到银行卡时需要
     */
    @ApiModelProperty(value="收款方银行卡号（采用标准RSA算法，公钥由微信侧提供）付款到银行卡时需要")
    private String encBankNo;

    /**
     * 收款方用户名（采用标准RSA算法，公钥由微信侧提供）付款到银行卡时需要
     */
    @ApiModelProperty(value="收款方用户名（采用标准RSA算法，公钥由微信侧提供）付款到银行卡时需要")
    private String encTrueName;

    /**
     * 银行卡所在开户行编号 付款到银行卡时需要
     */
    @ApiModelProperty(value="银行卡所在开户行编号 付款到银行卡时需要")
    private String bankCode;

    /**
     * 商户订单号，需保持唯一性(只能是字母或者数字，不能包含有其它字符)
     */
    @ApiModelProperty(value="商户订单号，需保持唯一性(只能是字母或者数字，不能包含有其它字符)")
    private String partnerTradeNo;

    /**
     * 用户openid 付款到微信零钱时需要
     */
    @ApiModelProperty(value="用户openid 付款到微信零钱时需要")
    private String openid;

    /**
     * 校验用户姓名选项 NO_CHECK：不校验真实姓名 FORCE_CHECK：强校验真实姓名 付款到微信零钱时需要
     */
    @ApiModelProperty(value="校验用户姓名选项 NO_CHECK：不校验真实姓名 FORCE_CHECK：强校验真实姓名 付款到微信零钱时需要")
    private String checkName;

    /**
     * 收款用户真实姓名。如果check_name设置为FORCE_CHECK，则必填用户真实姓名如需电子回单，需要传入收款用户姓名 付款到微信零钱时需要
     */
    @ApiModelProperty(value="收款用户真实姓名。如果check_name设置为FORCE_CHECK，则必填用户真实姓名如需电子回单，需要传入收款用户姓名 付款到微信零钱时需要")
    private String reUserName;

    /**
     * 付款金额，单位为分
     */
    @ApiModelProperty(value="付款金额，单位为分")
    private Integer amount;

    /**
     * 付款备注，必填。注意：备注中的敏感词会被转成字符*
     */
    @ApiModelProperty(value="付款备注，必填。注意：备注中的敏感词会被转成字符*")
    private String description;

    /**
     * 转账状态 SUCCESS:转账成功 FAILED:转账失败 PROCESSING:处理中
     */
    private String status;

    /**
     * 失败原因  如果失败则有
     */
    private String reason;

    /**
     * 通知队列
     */
    private String notifyQueue;

    /**
     * Ip地址
     */
    @ApiModelProperty(value="Ip地址")
    private String spbillCreateIp;

    /**
     * 返回状态码
     */
    @ApiModelProperty(value="返回状态码")
    private String returnCode;

    /**
     * 返回信息
     */
    @ApiModelProperty(value="返回信息")
    private String returnMsg;

    /**
     * 业务结果 SUCCESS/FAIL，注意：当状态为FAIL时，存在业务结果未明确的情况。如果状态为FAIL，请务必关注错误代码（err_code字段），通过查询接口确认此次付款的结果。
     */
    @ApiModelProperty(value="业务结果 SUCCESS/FAIL，注意：当状态为FAIL时，存在业务结果未明确的情况。如果状态为FAIL，请务必关注错误代码（err_code字段），通过查询接口确认此次付款的结果。")
    private String resultCode;

    /**
     * 错误码信息，注意：出现未明确的错误码时（SYSTEMERROR等），请务必用原商户订单号重试，或通过查询接口确认此次付款的结果。
     */
    @ApiModelProperty(value="错误码信息，注意：出现未明确的错误码时（SYSTEMERROR等），请务必用原商户订单号重试，或通过查询接口确认此次付款的结果。")
    private String errCode;

    /**
     * 结果信息描述
     */
    @ApiModelProperty(value="结果信息描述")
    private String errCodeDes;

    /**
     * 付款成功，返回的微信付款单号
     */
    @ApiModelProperty(value="付款成功，返回的微信付款单号")
    private String paymentNo;

    /**
     * 付款成功时间 付款到微信零钱时返回
     */
    @ApiModelProperty(value="付款成功时间 付款到微信零钱时返回")
    private String paymentTime;

    /**
     * 手续费金额. RMB：分 付款到银行卡时返回
     */
    @ApiModelProperty(value="手续费金额. RMB：分 付款到银行卡时返回")
    private Integer cmmsAmt;

}